"""
演示进程之间数据是相互隔离的：
    细节：
        1：进程之间的数据是相互隔离，不能共享
        2：子进程相当于父进程的副本，即：把父进程的内容拷贝一遍，单独的执行，注意：main外的资源
"""
# 需求：在不同进程中修改列表：my_list = [], 并新增元素，观察结果。
import multiprocessing, time

# 1：定义全局变量列表，表示“共享”资源
my_list = []
print("观察我执行了几次？")

# 2: 定义函数 write_data()，往列表中写入数据
def write_data():
    for i in range(1, 5):
        # 具体的添加数据到列表的动作
        my_list.append(i)
        # 为了效果更加明显，将结果打印出来
        print(f"写入数据：{i}")
        # time.sleep(0.5)

    # 添加完毕以后，打印下列表中的所有元素。
    print(f"write_data函数结果，{my_list}")

# 3：定义函数 read_data(), 从列表中读取数据
def read_data():
    time.sleep(3)
    print(f"read_data函数开始执行:{my_list}")

# 一个线程写入my_list数据，等到写入完成，另外一个线程读取前一个线程写入的变量数据，能否读取到？
if __name__ == '__main__':
    # 4: 创建两个进程，分别关联：两个函数
    p1 = multiprocessing.Process(target=write_data)
    p2 = multiprocessing.Process(target=read_data)

    # 5：执行线程
    p1.start()
    p2.start()